package webbrow.board.report.model;

import java.util.List;

import webbrow.board.component.BoardReportDao;
import webbrow.board.component.BoardReportService;
import webbrow.board.vo.BoardReportHistoryListVO;
import webbrow.board.vo.BoardReportHistoryVO;
import webbrow.board.vo.ReportVO;

public class BoardReportServiceImpl implements BoardReportService {
	private BoardReportDao boardReportDao;
	
	public BoardReportServiceImpl(BoardReportDao boardReportDao){
		super();
		this.boardReportDao=boardReportDao;
	}
	/**
	 * id 와 no(글번호)를 입력받아
	 * 신고 내역을 삽입한다.
	 * selectReportCount() 로 총 신고횟수를 반환받은 후
	 * 10 보다 크면(신고횟수가 10번 이상) content_type 을 업데이트 시킨다.
	 */
	@Override
	public void insertReport(BoardReportHistoryVO hvo) {
		int count=boardReportDao.selectReportCount(hvo.getNo());
		System.out.println("총 신고횟수 : "+count);
		if(count>=10){
			boardReportDao.updateContentType(hvo.getNo());
			System.out.println("신고 요청 10건 contentType update...");
		}
		boardReportDao.insertReport(hvo);
	}
	/**
	 * 모든 신고 사유를 가져온다.
	 * 기본 db 의 report 테이블에 있는 정보
	 * (신고창을 띄울때 사유들을 보여주기 위해)
	 */
	@Override
	public List<ReportVO> getReportMenu() {
		System.out.println("서비스 신고"+boardReportDao.selectReportMenu());
		return boardReportDao.selectReportMenu();
	}
	/**
	 * 글 번호와 아이디를 입력받아 신고횟수를 가져온다
	 * (한 사람이 같은 글을 중복으로 신고하지 못하기 위해)
	 */
	@Override
	public int isExistReport(BoardReportHistoryVO hvo) {
		System.out.println("신고횟수 : "+boardReportDao.isExistReport(hvo));
		return boardReportDao.isExistReport(hvo);
	}
	/**
	 * 신고 리스트를 가져온다.
	 * 관리자만 확인가능
	 */
	@Override
	public List<BoardReportHistoryListVO> selectReportList(int no) {
		return boardReportDao.selectReportList(no);
	}
	/**
	 * 해당 글번호에 따른 신고 횟수를 리스트로 가져온다.
	 * 관리자만 확인가능
	 */
	@Override
	public List<BoardReportHistoryVO> selectReportCountList() {
		return boardReportDao.selectReportCountList();
	}
	
	// //////////////////////////////////댓글신고//// 부분///////////////////////////////////
	/**
	 * 글 번호와 아이디를 입력받아 댓글 신고횟수를 가져온다 (한 사람이 같은 글을 중복으로 신고하지 못하기 위해)
	 */
	@Override
	public int isExistReplyReport(BoardReportHistoryVO hvo) {
		System.out.println("댓글 신고횟수 : "
				+ boardReportDao.isExistReplyReport(hvo));
		return boardReportDao.isExistReplyReport(hvo);
	}

	/**
	 * id 와 no(글번호)를 입력받아 댓글 신고 내역을 삽입한다. selectReportCount() 로 총 신고횟수를 반환받은 후
	 * 10 보다 크면(신고횟수가 10번 이상) content_type 을 업데이트 시킨다.
	 */
	@Override
	public void insertReplyReport(BoardReportHistoryVO hvo) {
		int count = boardReportDao.selectReplyReportCount(hvo.getNo());
		System.out.println("총 신고횟수 : " + count);
		if (count >= 10) {
			boardReportDao.updateReplyContentType(hvo.getNo());
			System.out.println("신고 요청 10건 contentType update...");
		}
		boardReportDao.insertReplyReport(hvo);

	}
	@Override
	public void deleteReport(int no) {
		boardReportDao.deleteReport(no);
	}
}